﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using MEsE.NET.Serveripää;
using MEsE.NET.Asetukset;

namespace MEsE.NET.Dialogit
{
    /// <summary>
    /// Interaction logic for FontDialog.xaml
    /// </summary>
    public partial class FontDialog : Window
    {
        App Controller = null;

        public FontDialog(App controller)
        {
            InitializeComponent();

            Controller = controller;

            fontit_comb.ItemsSource = Fonts.SystemFontFamilies;

            fontit_comb.Text = controller.Fontti.fontname;

            fonttityyli_comb.ItemsSource = Enum.GetValues(typeof(FontStyles));

            if (controller.Fontti.bold && controller.Fontti.italic) fonttityyli_comb.SelectedItem = FontStyles.BoldAndItalic;
            else if (controller.Fontti.bold) fonttityyli_comb.SelectedItem = FontStyles.Bold;
            else if (controller.Fontti.italic) fonttityyli_comb.SelectedItem = FontStyles.Italic;
            else if (controller.Fontti.underlined) fonttityyli_comb.SelectedItem = FontStyles.Underlined;
            else fonttityyli_comb.SelectedItem = FontStyles.None;

            fontinkoko_tb.Text = Controller.Fonttikoko.ToString();

            hex.Text = "#" + controller.Fontti.color;

        }

        private void Sliders_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
        {
            Color color = Color.FromRgb((byte)redSlider.Value, (byte)greenSlider.Value, (byte)blueSlider.Value);

            MEsE_WSClient serv = new MEsE_WSClient();

            int rgb = serv.getColor((int)redSlider.Value, (int)greenSlider.Value, (int)blueSlider.Value);

            string hexa = rgb.ToString("X");

            hex.Text = "#" + hexa.Substring(2);

            esittely.Foreground = new SolidColorBrush(color);
        }

        private void hex_TextChanged(object sender, TextChangedEventArgs e)
        {
            if (hex.Text.Length == 7)
            {
                Color väri = (Color)ColorConverter.ConvertFromString(hex.Text);

                redSlider.Value = väri.R;
                greenSlider.Value = väri.G;
                blueSlider.Value = väri.B;
            }
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            MEsE.NET.Serveripää.font fontti = Controller.Fontti;

            fontti.bold = fonttityyli_comb.SelectedItem.Equals(FontStyles.Bold) || fonttityyli_comb.SelectedItem.Equals(FontStyles.BoldAndItalic);
            fontti.color = getHex((byte)redSlider.Value, (byte)greenSlider.Value, (byte)blueSlider.Value);
            fontti.fontname = fontit_comb.Text;
            fontti.italic = fonttityyli_comb.SelectedItem.Equals(FontStyles.Italic) || fonttityyli_comb.SelectedItem.Equals(FontStyles.BoldAndItalic);
            fontti.underlined = fonttityyli_comb.SelectedItem.Equals(FontStyles.Underlined);

            int fonttikoko = 16;

            int.TryParse(fontinkoko_tb.Text, out fonttikoko);

            Controller.Fonttikoko = fonttikoko;

            using (Fonttiasetukset settigns = new Fonttiasetukset())
                settigns.Save(fontti);

            Close();
        }

        public string getHex(byte r, byte g, byte b)
        {
            MEsE_WSClient serv = new MEsE_WSClient();

            int rgb = serv.getColor((int)redSlider.Value, (int)greenSlider.Value, (int)blueSlider.Value);

            string hexa = rgb.ToString("X");

            return hexa.Substring(2);
        }
    }

    enum FontStyles
    {
        None, Bold, Italic, Underlined, BoldAndItalic
    }
}
